Original Question: >I'm searching for a way to convert the dots shown in a dot legend for a > polygon theme (where each dot represents a single event within a > particular polygon) to individual point features. Actually this is just a partial sum as my problem still isn't quite solved yet. Thanks to Patrick Moore, Bill Huber, and Phil Hurvitz for providing some excellent ideas and assistance. Basically what we came up with is a script (which follows the body of this message) that finds the centroid for each polygon and draws vectors at randomly generated angles outwardly radiating from the polygon centroid. Points are then placed at random distances along each vector. The number of vectors drawn for each polygon is determined by a user specified field in the polygon theme. Upon initial testing using the Country.shp sample data set that comes with ArcView, the script appeared to run beautifully with excellent point distribution and randomization each time the script was run. However, with any other data set I've run the script on, the vectors drawn and the points placed appear to be constrained to a very narrow range that is the very nearly the same for each polygon and doesn't appear to change much each time the script is run. Is there something magical about Country.shp? I don't think so but cannot figure out why the script works well with that particular shapefile and no other. I welcome anyone to take a look at this and appreciate any ideas/input/advice as to how/why the script is not working with all polygon themes. Thanks again and will sum anything new I learn. So close yet so far! Robert Chao Script Follows: 'Random Points from Polygon 'Created 10/23/01 by Phil Hurvitz 'Concept by Patrick Moore 'This script should create random points from a polygon theme similiar to a dot density map. 'The placement of points is based on randomly radiating vectors from the polygon centroids. 'Points are then randomly located along the lines between the centroid and the polygon boundary. 'The number of points and vectors created is based on a numeric field in the polygon theme. ' Set the Variables theView = av.GetActiveDoc thePointList = List.Make theDir = av.GetProject.GetWorkDir theGList = theView.GetGraphics theTheme = theView.GetActiveThemes.Get(0) theFTab = theTheme.GetFTab theShapeField = theFTab.FindField("Shape") theExtent = theTheme.ReturnExtent theXE = theExtent.GetWidth theYE = theExtent.GetHeight theDist = theXE.Max(theYE) theFields = theFTab.GetFields ' Build something here to add only numeric fields theField = MsgBox.ListAsString(theFields, "Select numeric field", "Select") ' The next two lines were created to verify that angles and radians generated are random theAngles = List.Make theRadians = List.Make for each theRec in theFTab thePoly = theFTab.ReturnValue(theShapeField, theRec) theNumberOfTimes = theFTab.ReturnValue(theField, theRec) theCentroid = thePoly.ReturnCenter for each i in (1 .. theNumberofTimes) theAng = number.MakeRandom(0, 360) theAngles.Add(theAng) theRad = theAng.AsRadians theRadians.Add(theRad) theCos = theRad.Cos theSin = theRad.Sin theX = theCos * theDist theY = theSin * theDist thePoint = Point.Make(theX, theY) theLine = PolyLine.Make({{theCentroid, thePoint}}) theClippedLine = theLine.LineIntersection (thePoly) theGList.Add(GraphicShape.Make(theClippedLine)) 'theGList.Add(GraphicShape.Make(theLine)) theDistance = Number.MakeRandom(0, 100) theSamplePoint = theClippedLine.Along(theDistance) thePointList.Add(theSamplePoint) 'theGList.Add(GraphicShape.Make(theSamplePoint)) end end theGList.Invalidate theView.Invalidate av.ProcessAllINvals ' Create the new point shapefile theNewFN = theDir.MakeTmp("samp", "shp") thePointFTab = FTab.MakeNew (theNewFN, Point) thePShapeField = thePointFTab.FindField("Shape") thePointFTab.AddFields({Field.Make("ID", #FIELD_CHAR, 2, 0)}) for each thePoint in thePointList theRec = thePointFTab.AddRecord thePointFTab.SetValue(thePShapeField, theRec, thePoint) end thePointTheme = FTheme.Make(thePointFTab) theView.AddTheme(thePointTheme) thePointTheme.SetVisible(True) 'Create Message Boxes to see what angles are generated theAngles.RemoveDuplicates theAngles.Sort(True) MsgBox.ListAsString(theAngles, "The Angles:", "The Angles") theRadians.RemoveDuplicates theRadians.Sort(True) 'MsgBox.ListAsString(theRadians, "The Radians:", "The Radians")